package net.maku.module.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.maku.framework.common.utils.DateUtils;
import net.maku.module.entity.AgApproveEntity;
import net.maku.module.entity.AgCategoryPermission;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
@Schema(description = "栏目信息")
public class AgCategoryVO implements Serializable {
    private static final long serialVersionUID = 1L;
    // 初始化 children 列表
    private List<AgCategoryVO> children = new ArrayList<>();
    @Schema(description = "id")
    private Long id;
    private String imageUrl;
    @Schema(description = "租户id")
    private Integer tenantId;

    @Schema(description = "父级id")
    private Integer parentId;

    @Schema(description = "栏目名称")
    private String name;

    @Schema(description = "栏目描述")
    private String description;

    @Schema(description = "排序字段")
    private Integer sort;

    @Schema(description = "栏目层级")
    private Integer level;

    @Schema(description = "栏目状态")
    private Integer status;

    @Schema(description = "创建时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date createTime;

    @Schema(description = "更新时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date updateTime;

    @Schema(description = "删除标识")
    private Integer deleted;

    @Schema(description = "创建人")
    private Long creator;

    @Schema(description = "更新人")
    private Long updater;

    @Schema(description = "版本号")
    private Integer version;
    /**
     * 网站id
     */
    @Schema(description = "网站id")
    private Integer websiteId;
    private String createdByName; // 创建人名字
    private String modifiedByName; // 修改人名字
    private Integer templateType;
    private String parentName;


    private List<AgCategoryPermission> agCategoryPermissions;
    private AgCategoryPermission agCategoryPermission;
    private AgApproveEntity agApprove;
    private List<AgApproveEntity> agApproveList;

    private String approveState;

    private String approveType;
    private String topId;
    private String topName;

    private String publishTime;
    private String revokeTime;
}
